Реализация gRPC-метода GetErrorDirectory в auth-service

Разработка gRPC обработчика для извлечения активного справочника локализованных ошибок из PostgreSQL.

Author

Services Task & Simulation Framework Documentation

Published

July 13, 2026

NoteКраткая карточка задачи
  • Репозиторий / Компонент: auth-service (Backend, домен SECURITY/IAD).
  • Контракт метода: gRPC rpc GetErrorDirectory(DirectoryRequest) returns (DirectoryResponse);
  • Спецификация контракта: См. Раздел: Protobuf Контракт: GetErrorDirectory
  • Статус: Готово к реализации

WarningОграничение публичной документации

В открытом доступе представлена демонстрационная версия задачи. В настоящей публичной документации отображены не все шаги, технические сценарии и приватные эндпоинты для системы цифровых симуляторов бизнес-процессов.

  • Полная спецификация метода: Доступна только во внутреннем контуре разработки (Confluence / Swagger Enterprise).
  • Для получения доступа: Обратитесь к системному аналитику или Product Owner вашей команды.

  • Предварительные условия (Prerequisites):
    1. Убедиться, что DDL-миграция таблицы auth_db.error_directory (IAD-MIGRATION-121) успешно применена к целевой БД PostgreSQL.
    2. Сгенерировать серверные стабы (gRPC stubs) на основе актуального файла auth.proto.
  • Инструкция по шагам:
    1. На Шаге 3 (Валидация языка): Реализовать gRPC-хэндлер GetErrorDirectory. Проверить входящий параметр language по белому списку поддерживаемых локалей системы (например, ru, en, kz). Если передан пустой или невалидный локализационный код, прерывать обработку с ошибкой gRPC Status: INVALID_ARGUMENT (HTTP статус 422 на шлюзе).
    2. На Шаге 4 (Выборка данных): Написать оптимизированный SQL-запрос к созданной таблице auth_db.error_directory для извлечения всех активных записей, удовлетворяющих условию is_active = true. Добавить фильтрацию по версии мобильного приложения: min_app_version <= :app_version.
    3. На Шаге 5-6 (Парсинг JSONB-полей): Итерируя результирующий набор строк, динамически вычитать из полей message_translations и resolution_hint_translations текстовые значения по ключу переданного language [2026-07-02]. Если перевод для запрашиваемого языка отсутствует в бинарном JSONB, устанавливать дефолтный английский (en) текст.
    4. Сборка ответа: Смаппить распарсенные данные в массив Protobuf-структур repeated ErrorItem errors, зафиксировать текущий UNIX-timestamp в поле synced_at и вернуть шлюзу финальный ответ DirectoryResponse.